import sun.reflect.generics.tree.Tree;

public class Demo2 {
    public static void main(String[] args) throws InterruptedException {
        Object obj = new Object();
        Thread t1 = new Thread(()->{
            synchronized(obj) {
                System.out.println("1");
            }
        });

        Thread t2 = new Thread(()->{
            synchronized (obj){
                System.out.println("2");
            }
        });

        Thread t3 = new Thread(()->{
            synchronized (obj){
                System.out.println("3");
            }
        });

        Thread t4 = new Thread(()->{
            synchronized (obj){
                System.out.println("4");
            }
        });

        Thread t5 = new Thread(()->{
            synchronized (obj){
                System.out.println("5");
            }
        });

        Thread t6 = new Thread(()->{
            synchronized (obj){
                System.out.println("6");
            }
        });

        Thread t7 = new Thread(()->{
            synchronized (obj){
                System.out.println("7");
            }
        });

        Thread t8 = new Thread(()->{
            synchronized (obj){
                System.out.println("8");
            }
        });

        Thread t9 = new Thread(()->{
            synchronized (obj){
                System.out.println("9");
            }
        });

        Thread t10 = new Thread(()->{
            synchronized (obj){
                System.out.println("10");
            }
        });

        Thread t11 = new Thread(()->{
            synchronized (obj){
                System.out.println("11");
            }
        });

        Thread t12 = new Thread(()->{
            synchronized (obj){
                System.out.println("12");
            }
        });

        Thread t13 = new Thread(()->{
            synchronized (obj){
                System.out.println("13");
            }
        });

        Thread t14 = new Thread(()->{
            synchronized (obj){
                System.out.println("14");
            }
        });

        Thread t15 = new Thread(()->{
            synchronized (obj){
                System.out.println("15");
            }
        });

        Thread t16 = new Thread(()->{
            synchronized (obj){
                System.out.println("16");
            }
        });

        Thread t17 = new Thread(()->{
            synchronized (obj){
                System.out.println("17");
            }
        });

        Thread t18 = new Thread(()->{
            synchronized (obj){
                System.out.println("18");
            }
        });

        Thread t19 = new Thread(()->{
            synchronized (obj){
                System.out.println("19");
            }
        });

        t1.start();t1.join();
        t2.start();t2.join();
        t3.start();t3.join();
        t4.start();t4.join();
        t5.start();t5.join();
        t6.start();t6.join();
        t7.start();t7.join();
        t8.start();t8.join();
        t9.start();t9.join();
        t10.start();t10.join();
        t11.start();t11.join();
        t12.start();t12.join();
        t13.start();t13.join();
        t14.start();t14.join();
        t15.start();t15.join();
        t16.start();t16.join();
        t17.start();t17.join();
        t18.start();t18.join();
        t19.start();t19.join();

        System.out.println("ok");
    }
}
class A{
    static int j = 1;
    public static void main(String[] args) throws InterruptedException {
        Thread[] t = new Thread[19];
        Object obj = new Object();
        for (int i = 0; i < t.length; i++) {
            t[i] = new Thread(()->{
                synchronized (obj){
                    System.out.println(j++);
                }
            });
            t[i].start();
            t[i].join();
        }
        System.out.println("ok");
    }
}
